import groovy.transform.Field

/**
 * 确认弹窗，此弹窗可以带一些参数
 * 如果带一个参数，返回该参数值
 * 如果带多个参数，返回多个参数的映射表
 */


@Field
def paramMap = [:]

/**
 * 添加参数
 * <br>
 *     使用方法：
 confirm{params{buildParams{str("name","张三","姓名")}}}或
 confirm{params{[
 string(name:"name",defaultValue:"张三",description:"姓名")
 ]}}* @param closure
 * @return
 */
def params(Closure cb) {
    def paramList = buildParams(cb, true)
    if (!paramMap["parameters"]) {
        paramMap["parameters"] = []
    }
    paramMap["parameters"] += paramList
}

/**
 * 自定义id
 * @param v
 * @return
 */
def id(v) {
    if (v) {
        paramMap["id"] = v
    }
}

/**
 * 确认按钮显示名
 * @param v
 * @return
 */
def label(v) {
    if (v) {
        paramMap["title"] = v
    }
}

/**
 * 提示的信息
 * @param v
 * @return
 */
def message(v) {
    if (v) {
        paramMap["message"] = v
    }
}

/**
 * 允许提交的人
 * @param v 人员登录名，多个使用逗号分开
 */
def user(v) {
    if (v) {
        paramMap["submitter"] = v
    }
}

/**
 * 一旦用户确认后，人员id将会保存在此参数中
 * @param v
 * @return
 */
def userParmName(v) {
    if (v) {
        paramMap["submitterParameter"] = v
    }
}

def call(Closure closure) {
    paramMap=[:]
    closure.delegate = this
    closure()
    def id = paramMap["id"]
    if (!id) {
        id = Utils { uuid() }
        paramMap["id"] = id
    }
    input(paramMap)
}